iT邦幫忙

2024 iThome 鐵人賽

DAY 2
0

前情提要

昨天我們介紹了git的一些常用指令,學會了之後我們就可以研究更多的東西。

Git Strategy

為什麼我們會需要git strategy呢?
身為一個開發者,不只要把code寫出來,還要能跟別人順利的合作,如果我們固執的選擇自己喜歡的方式(除非是一人專案),亂推code遲早會出事情。

如果為多人開發團隊,會遇到分工的問題,這時候我們可以透過切分git branch來讓我們的工作變得順利一點。

那麼我們可以怎麼來切分呢?

Git Flow

https://ithelp.ithome.com.tw/upload/images/20240916/20129702DgB8gRNYeF.png

一共分有四種分支的類型,master(main),dev,feature,release,hotfix

master(main)

  • 主要是用來放穩定、隨時可上線的版本。這個分支的來源只能從別的分支合併過來,開發者不會直接 Commit到這個分支。因為是穩定版本,所以通常也會在這個分支上的 Commit 上打上版本號標籤。
  • main分支的生命週期最長。

develop

  • 這個分支是所有開發的基礎分支,要開發新功能的時候,所有的feature分支都是從這個分支切出去的。而feature分支的功能完成後,也都會合併回來這個分支。
  • develop分支的生命週期也很長,基本上也跟著專案存亡。

feature

  • 要開始開發功能的時候,就要使用 Feature 分支。feature分支都是從develop分支來的,完成之後會再併回develop分支。因此feature分支可能會有好幾百隻,如果沒有做好管理,可能會造成分支地獄! 超多的分支完成沒刪除!!
  • feature分支的生命週期建議要短一點,開發完成就要刪掉,不然會難以控制分支的數量。

release

  • 當認為develop分支夠成熟了,就可以把develop分支的內容合併到release分支,算是上到正式環境的最後測試。測試完成後,release 分支將會同時合併到main以及develop這兩個分支上,而合併回develop分支的目的,是因為可能在release分支上還會測到並修正一些問題,所以需要跟 develop分支同步,免得之後的版本又再度出現同樣的問題
  • release分支的生命週期也較短,建議可以刪除他。

hotfix

  • 當線上產品發生緊急問題的時候,會從main分支開一個hotfix分支出來進行修復,hotfix分支修復完成之後,會合併回main分支,也同時會合併一份到develop分支。
  • 為什麼要合併回Develop分支呢?如果不這麼做,等之後develop分支完成並且合併回main分支的時候,那個問題就再次出現啦,這樣不就要再解決一次了QQ 那為什麼一開始不從develop分支切出來修呢?因為develop分支的功能可能有許多正在開發中的內容,這時候硬是要從這邊切出去修再合併回main分支,只會造成更大的災難。
  • hotfix分支可以再解決問題後就可以刪除了。

總結

今天學到了Git flow來管理我們的分支,那他有什麼優點呢?
pros:

  • 分支都有自己的功能,分工可以順利。
  • 清楚的責任
  • 穩定的Release
  • 大小團隊都適用

cons:

  • feature分支如果沒管理好,可能會有長生命週期的feature分支出現。
  • 整體來說稍微複雜點,有好幾種分支情境。
  • 可能需要大量解衝突
  • release速度較慢

reference

https://gitbook.tw/chapters/gitflow/why-need-git-flow


上一篇
Day 1 前言 + Git流程
下一篇
Day 3 Git Strategy - Github Flow
系列文
Backend Developer的學習Roadmap30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言